using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._LinearReferencingTools
{
    /// <summary>
    /// <para>Overlay Route Events</para>
    /// <para>Overlays two event tables to create an output event table that represents the union or intersection of the input.</para>
    /// <para>叠加两个事件表以创建表示输入的并集或交集的输出事件表。</para>
    /// </summary>    
    [DisplayName("Overlay Route Events")]
    public class OverlayRouteEvents : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public OverlayRouteEvents()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_table">
        /// <para>Input Event Table</para>
        /// <para>The input event table.</para>
        /// <para>输入事件表。</para>
        /// </param>
        /// <param name="_in_event_properties">
        /// <para>Input Event Table Properties</para>
        /// <para><xdoc>
        ///   <para>Parameter consisting of the route location fields and the type of events in the input event table.</para>
        ///   <bulletList>
        ///     <bullet_item>Route Identifier Field—The field containing values that indicate the route on which each event is located. This field can be numeric or character.</bullet_item><para/>
        ///     <bullet_item>Event Type—The type of events in the input event table (POINT or LINE).
        ///     <bulletList>
        ///       <bullet_item>POINT—Point events occur at a precise location along a route. Only a from-measure field must be specified.  </bullet_item><para/>
        ///       <bullet_item>LINE—Line events define a portion of a route. Both from- and to-measure fields must be specified.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is POINT or LINE. Note when the Event Type is POINT, the label for this parameter becomes Measure Field.</bullet_item><para/>
        ///     <bullet_item>To-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is LINE.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>由路径位置字段和输入事件表中的事件类型组成的参数。</para>
        ///   <bulletList>
        ///     <bullet_item>路径标识符字段 - 包含指示每个事件所在路径的值的字段。此字段可以是数字或字符。</bullet_item><para/>
        /// <bullet_item>事件类型 - 输入事件表中的事件类型（POINT 或 LINE）。
        ///     <bulletList>
        ///       <bullet_item>POINT - 点事件发生在沿路径的精确位置。只需指定 from-measure 字段。 </bullet_item><para/>
        ///       <bullet_item>LINE - 线事件定义路径的一部分。必须同时指定 from-measure 和 to-measure 字段。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure 字段 - 包含测量值的字段。此字段必须为数值，并且在事件类型为 POINT 或 LINE 时为必填字段。注意：当“事件类型”为“点”时，此参数的标签将变为“测量字段”。</bullet_item><para/>
        ///     <bullet_item>待测量字段 （To-Measure Field） - 包含测量值的字段。此字段必须为数值，当事件类型为 LINE 时为必填字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_overlay_table">
        /// <para>Overlay Event Table</para>
        /// <para>The overlay event table.</para>
        /// <para>覆盖事件表。</para>
        /// </param>
        /// <param name="_overlay_event_properties">
        /// <para>Overlay Event Table Properties</para>
        /// <para><xdoc>
        ///   <para>Parameter consisting of the route location fields and the type of events in the overlay event table.</para>
        ///   <para>Route Identifier Field—The field containing values that indicate which route each event is along. This field can be numeric or character.</para>
        ///   <para>Event Type—The type of events in the overlay event table (POINT or LINE).</para>
        ///   <bulletList>
        ///     <bullet_item>POINT—Point events occur at a precise location along a route. Only a from-measure field must be specified.</bullet_item><para/>
        ///     <bullet_item>LINE—Line events define a portion of a route. Both from- and to-measure fields must be specified.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>From-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is POINT or LINE. Note when the Event Type is POINT the label for this parameter becomes "Measure Field".</para>
        ///   <para>To-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is LINE.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>由路径位置字段和叠加事件表中的事件类型组成的参数。</para>
        ///   <para>路径标识符字段 - 包含指示每个事件所沿路径的值的字段。此字段可以是数字或字符。</para>
        ///   <para>事件类型 - 叠加事件表（POINT 或 LINE）中的事件类型。</para>
        ///   <bulletList>
        ///     <bullet_item>POINT - 点事件发生在沿路径的精确位置。只需指定 from-measure 字段。</bullet_item><para/>
        ///     <bullet_item>LINE - 线事件定义路径的一部分。必须同时指定 from-measure 和 to-measure 字段。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>From-Measure 字段 - 包含测量值的字段。此字段必须为数值，并且在事件类型为 POINT 或 LINE 时为必填字段。请注意，当“事件类型”为“点”时，此参数的标签将变为“度量字段”。</para>
        ///   <para>待测量字段 （To-Measure Field） - 包含测量值的字段。此字段必须为数值，当事件类型为 LINE 时为必填字段。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_overlay_type">
        /// <para>Type of Overlay</para>
        /// <para><xdoc>
        ///   <para>The type of overlay to be performed.</para>
        ///   <bulletList>
        ///     <bullet_item>Intersect—Writes only overlapping events to the output event table. This is the default.</bullet_item><para/>
        ///     <bullet_item>Union—Writes all events to the output table. Linear events are split at their intersections.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要执行的叠加类型。</para>
        ///   <bulletList>
        ///     <bullet_item>相交 （Intersect） - 仅将重叠事件写入输出事件表。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>并集 （Union） - 将所有事件写入输出表。线性事件在其交点处被分割。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_out_table">
        /// <para>Output Event Table</para>
        /// <para>The table to be created.</para>
        /// <para>要创建的表。</para>
        /// </param>
        /// <param name="_out_event_properties">
        /// <para>Output Event Table Properties</para>
        /// <para><xdoc>
        ///   <para>Parameter consisting of the route location fields and the type of events that will be written to the output event table.</para>
        ///   <bulletList>
        ///     <bullet_item>Route Identifier Field—The field that will contain values that indicate the route on which each event is located.</bullet_item><para/>
        ///     <bullet_item>Event Type—The type of events the output event table will contain (POINT or LINE).
        ///     <bulletList>
        ///       <bullet_item>POINT—Point events occur at a precise location along a route. Only a single measure field must be specified.  </bullet_item><para/>
        ///       <bullet_item>LINE—Line events define a portion of a route. Both from- and to-measure fields must be specified.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure Field—A field that will contain measure values. Required when the event type is POINT or LINE. Note when the Event Type is POINT, the label for this parameter becomes Measure Field.</bullet_item><para/>
        ///     <bullet_item>To-Measure Field—A field that will contain measure values. Required when the event type is LINE.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>由路径位置字段和将写入输出事件表的事件类型组成的参数。</para>
        ///   <bulletList>
        ///     <bullet_item>路径标识符字段 - 包含指示每个事件所在路径的值的字段。</bullet_item><para/>
        /// <bullet_item>事件类型 - 输出事件表将包含的事件类型（POINT 或 LINE）。
        ///     <bulletList>
        ///       <bullet_item>POINT - 点事件发生在沿路径的精确位置。只需指定一个度量字段。 </bullet_item><para/>
        ///       <bullet_item>LINE - 线事件定义路径的一部分。必须同时指定 from-measure 和 to-measure 字段。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure 字段 - 包含测量值的字段。当事件类型为 POINT 或 LINE 时为必填项。注意：当“事件类型”为“点”时，此参数的标签将变为“测量字段”。</bullet_item><para/>
        ///     <bullet_item>待测量字段 （To-Measure Field） - 将包含测量值的字段。当事件类型为LINE时为必填项。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public OverlayRouteEvents(object _in_table, object _in_event_properties, object _overlay_table, object _overlay_event_properties, _overlay_type_value _overlay_type, object _out_table, object _out_event_properties)
        {
            this._in_table = _in_table;
            this._in_event_properties = _in_event_properties;
            this._overlay_table = _overlay_table;
            this._overlay_event_properties = _overlay_event_properties;
            this._overlay_type = _overlay_type;
            this._out_table = _out_table;
            this._out_event_properties = _out_event_properties;
        }
        public override string ToolboxName => "Linear Referencing Tools";

        public override string ToolName => "Overlay Route Events";

        public override string CallName => "lr.OverlayRouteEvents";

        public override List<string> AcceptEnvironments => ["configKeyword", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_in_table, _in_event_properties, _overlay_table, _overlay_event_properties, _overlay_type.GetGPValue(), _out_table, _out_event_properties, _zero_length_events.GetGPValue(), _in_fields.GetGPValue(), _build_index.GetGPValue()];

        /// <summary>
        /// <para>Input Event Table</para>
        /// <para>The input event table.</para>
        /// <para>输入事件表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Event Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_table { get; set; }


        /// <summary>
        /// <para>Input Event Table Properties</para>
        /// <para><xdoc>
        ///   <para>Parameter consisting of the route location fields and the type of events in the input event table.</para>
        ///   <bulletList>
        ///     <bullet_item>Route Identifier Field—The field containing values that indicate the route on which each event is located. This field can be numeric or character.</bullet_item><para/>
        ///     <bullet_item>Event Type—The type of events in the input event table (POINT or LINE).
        ///     <bulletList>
        ///       <bullet_item>POINT—Point events occur at a precise location along a route. Only a from-measure field must be specified.  </bullet_item><para/>
        ///       <bullet_item>LINE—Line events define a portion of a route. Both from- and to-measure fields must be specified.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is POINT or LINE. Note when the Event Type is POINT, the label for this parameter becomes Measure Field.</bullet_item><para/>
        ///     <bullet_item>To-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is LINE.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>由路径位置字段和输入事件表中的事件类型组成的参数。</para>
        ///   <bulletList>
        ///     <bullet_item>路径标识符字段 - 包含指示每个事件所在路径的值的字段。此字段可以是数字或字符。</bullet_item><para/>
        /// <bullet_item>事件类型 - 输入事件表中的事件类型（POINT 或 LINE）。
        ///     <bulletList>
        ///       <bullet_item>POINT - 点事件发生在沿路径的精确位置。只需指定 from-measure 字段。 </bullet_item><para/>
        ///       <bullet_item>LINE - 线事件定义路径的一部分。必须同时指定 from-measure 和 to-measure 字段。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure 字段 - 包含测量值的字段。此字段必须为数值，并且在事件类型为 POINT 或 LINE 时为必填字段。注意：当“事件类型”为“点”时，此参数的标签将变为“测量字段”。</bullet_item><para/>
        ///     <bullet_item>待测量字段 （To-Measure Field） - 包含测量值的字段。此字段必须为数值，当事件类型为 LINE 时为必填字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Event Table Properties")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_event_properties { get; set; }


        /// <summary>
        /// <para>Overlay Event Table</para>
        /// <para>The overlay event table.</para>
        /// <para>覆盖事件表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Overlay Event Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _overlay_table { get; set; }


        /// <summary>
        /// <para>Overlay Event Table Properties</para>
        /// <para><xdoc>
        ///   <para>Parameter consisting of the route location fields and the type of events in the overlay event table.</para>
        ///   <para>Route Identifier Field—The field containing values that indicate which route each event is along. This field can be numeric or character.</para>
        ///   <para>Event Type—The type of events in the overlay event table (POINT or LINE).</para>
        ///   <bulletList>
        ///     <bullet_item>POINT—Point events occur at a precise location along a route. Only a from-measure field must be specified.</bullet_item><para/>
        ///     <bullet_item>LINE—Line events define a portion of a route. Both from- and to-measure fields must be specified.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>From-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is POINT or LINE. Note when the Event Type is POINT the label for this parameter becomes "Measure Field".</para>
        ///   <para>To-Measure Field—A field containing measure values. This field must be numeric and is required when the event type is LINE.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>由路径位置字段和叠加事件表中的事件类型组成的参数。</para>
        ///   <para>路径标识符字段 - 包含指示每个事件所沿路径的值的字段。此字段可以是数字或字符。</para>
        ///   <para>事件类型 - 叠加事件表（POINT 或 LINE）中的事件类型。</para>
        ///   <bulletList>
        ///     <bullet_item>POINT - 点事件发生在沿路径的精确位置。只需指定 from-measure 字段。</bullet_item><para/>
        ///     <bullet_item>LINE - 线事件定义路径的一部分。必须同时指定 from-measure 和 to-measure 字段。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>From-Measure 字段 - 包含测量值的字段。此字段必须为数值，并且在事件类型为 POINT 或 LINE 时为必填字段。请注意，当“事件类型”为“点”时，此参数的标签将变为“度量字段”。</para>
        ///   <para>待测量字段 （To-Measure Field） - 包含测量值的字段。此字段必须为数值，当事件类型为 LINE 时为必填字段。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Overlay Event Table Properties")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _overlay_event_properties { get; set; }


        /// <summary>
        /// <para>Type of Overlay</para>
        /// <para><xdoc>
        ///   <para>The type of overlay to be performed.</para>
        ///   <bulletList>
        ///     <bullet_item>Intersect—Writes only overlapping events to the output event table. This is the default.</bullet_item><para/>
        ///     <bullet_item>Union—Writes all events to the output table. Linear events are split at their intersections.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要执行的叠加类型。</para>
        ///   <bulletList>
        ///     <bullet_item>相交 （Intersect） - 仅将重叠事件写入输出事件表。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>并集 （Union） - 将所有事件写入输出表。线性事件在其交点处被分割。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Type of Overlay")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _overlay_type_value _overlay_type { get; set; }

        public enum _overlay_type_value
        {
            /// <summary>
            /// <para>Intersect</para>
            /// <para>Intersect—Writes only overlapping events to the output event table. This is the default.</para>
            /// <para>相交 （Intersect） - 仅将重叠事件写入输出事件表。这是默认设置。</para>
            /// </summary>
            [Description("Intersect")]
            [GPEnumValue("INTERSECT")]
            _INTERSECT,

            /// <summary>
            /// <para>Union</para>
            /// <para>Union—Writes all events to the output table. Linear events are split at their intersections.</para>
            /// <para>并集 （Union） - 将所有事件写入输出表。线性事件在其交点处被分割。</para>
            /// </summary>
            [Description("Union")]
            [GPEnumValue("UNION")]
            _UNION,

        }

        /// <summary>
        /// <para>Output Event Table</para>
        /// <para>The table to be created.</para>
        /// <para>要创建的表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Event Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_table { get; set; }


        /// <summary>
        /// <para>Output Event Table Properties</para>
        /// <para><xdoc>
        ///   <para>Parameter consisting of the route location fields and the type of events that will be written to the output event table.</para>
        ///   <bulletList>
        ///     <bullet_item>Route Identifier Field—The field that will contain values that indicate the route on which each event is located.</bullet_item><para/>
        ///     <bullet_item>Event Type—The type of events the output event table will contain (POINT or LINE).
        ///     <bulletList>
        ///       <bullet_item>POINT—Point events occur at a precise location along a route. Only a single measure field must be specified.  </bullet_item><para/>
        ///       <bullet_item>LINE—Line events define a portion of a route. Both from- and to-measure fields must be specified.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure Field—A field that will contain measure values. Required when the event type is POINT or LINE. Note when the Event Type is POINT, the label for this parameter becomes Measure Field.</bullet_item><para/>
        ///     <bullet_item>To-Measure Field—A field that will contain measure values. Required when the event type is LINE.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>由路径位置字段和将写入输出事件表的事件类型组成的参数。</para>
        ///   <bulletList>
        ///     <bullet_item>路径标识符字段 - 包含指示每个事件所在路径的值的字段。</bullet_item><para/>
        /// <bullet_item>事件类型 - 输出事件表将包含的事件类型（POINT 或 LINE）。
        ///     <bulletList>
        ///       <bullet_item>POINT - 点事件发生在沿路径的精确位置。只需指定一个度量字段。 </bullet_item><para/>
        ///       <bullet_item>LINE - 线事件定义路径的一部分。必须同时指定 from-measure 和 to-measure 字段。 </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>From-Measure 字段 - 包含测量值的字段。当事件类型为 POINT 或 LINE 时为必填项。注意：当“事件类型”为“点”时，此参数的标签将变为“测量字段”。</bullet_item><para/>
        ///     <bullet_item>待测量字段 （To-Measure Field） - 将包含测量值的字段。当事件类型为LINE时为必填项。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Event Table Properties")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_event_properties { get; set; }


        /// <summary>
        /// <para>Keep zero length line events</para>
        /// <para><xdoc>
        ///   <para>Specifies whether to keep zero length line events in the output table. This parameter is only valid when the output event type is LINE.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Keep zero length line events. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Do not keep zero length line events.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否在输出表中保留零长度的线事件。仅当输出事件类型为LINE时，该参数才有效。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 （Checked） - 保持零长度线事件。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 不保留零长度线事件。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Keep zero length line events")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _zero_length_events_value _zero_length_events { get; set; } = _zero_length_events_value._true;

        public enum _zero_length_events_value
        {
            /// <summary>
            /// <para>ZERO</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ZERO")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_ZERO</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_ZERO")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Include all fields from input</para>
        /// <para><xdoc>
        ///   <para>Specifies whether all the fields from the input and overlay event tables will be written to the output event table.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Includes all the fields from the input tables in the output table. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Does not include all the fields from the input tables in the output table. Only the ObjectID and the route location fields are kept.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否将输入和叠加事件表中的所有字段写入输出事件表。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 （Checked） - 将输入表中的所有字段都包括在输出表中。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 不包括输出表中输入表中的所有字段。仅保留 ObjectID 和路由位置字段。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include all fields from input")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _in_fields_value _in_fields { get; set; } = _in_fields_value._true;

        public enum _in_fields_value
        {
            /// <summary>
            /// <para>FIELDS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("FIELDS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_FIELDS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_FIELDS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Build index</para>
        /// <para><xdoc>
        ///   <para>Specifies whether an attribute index will be created for the route identifier field that is written to the output event table.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Creates an attribute index. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Does not create an attribute index.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否为写入输出事件表的路由标识符字段创建属性索引。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 （Checked） - 创建属性索引。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 不创建属性索引。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Build index")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _build_index_value _build_index { get; set; } = _build_index_value._true;

        public enum _build_index_value
        {
            /// <summary>
            /// <para>INDEX</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INDEX")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_INDEX</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_INDEX")]
            [GPEnumValue("false")]
            _false,

        }

        public OverlayRouteEvents SetEnv(object configKeyword = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(configKeyword: configKeyword, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}